﻿
namespace Kyoh.Lib.Excel
{
    /// <summary>オブジェクトのフォント属性 (フォント名、フォント サイズ、色など) の全体を表します。</summary>
	public class Font : Component
	{
        private Font(object obj, Component parent)
            : base(obj, parent)
        {
        }

        /// <summary>Excel COM オブジェクトで、新しいインスタンスを初期化します。</summary>
        /// <param name="obj">Excel COM オブジェクト</param>
        /// <param name="parent">親となる <see cref="Component"/> オブジェクト。</param>
		internal static Font Create(object obj, Component parent)
		{
			return obj == null ? null : new Font(obj, parent);
		}

        /// <summary>背景を取得・設定します。</summary>
        public Background Background
        {
            get { return (Background)(int)base.GetProperty("Background"); }
            set { base.SetProperty("Background", (int)value); }
        }
        /// <summary>太字かどうかを取得・設定します。</summary>
		public bool Bold
		{
			get { return (bool)base.GetProperty("Bold"); }
			set { base.SetProperty("Bold", value); }
		}
        /// <summary>色を取得・設定します。</summary>
		public VbColor Color
		{
			get { return VbColor.FromInteger((int)(double)base.GetProperty("Color")); }
			set { base.SetProperty("Color", value.ToInteger()); }
		}
        /// <summary>色をインデックスで取得・設定します。</summary>
        public int ColorIndex
        {
            get { return (int)base.GetProperty("ColorIndex"); }
            set { base.SetProperty("ColorIndex", value); }
        }
        /// <summary>スタイルを取得・設定します。</summary>
        public string FontStyle
        {
            get { return (string)base.GetProperty("FontStyle"); }
            set { base.SetProperty("FontStyle", value); }
        }
        /// <summary>斜体かどうかを取得・設定します。</summary>
		public bool Italic
		{
			get { return (bool)base.GetProperty("Italic"); }
			set { base.SetProperty("Italic", value); }
		}
        /// <summary>名前を取得・設定します。</summary>
		public string Name
		{
			get { return (string)base.GetProperty("Name"); }
			set { base.SetProperty("Name", value); }
		}
        /// <summary>アウトラインで表示するかどうかを取得・設定します。</summary>
        public bool OutlineFont
        {
            get { return (bool)base.GetProperty("OutlineFont"); }
            set { base.SetProperty("OutlineFont", value); }
        }
        /// <summary>影を表示するかどうかを取得・設定します。</summary>
        public bool Shadow
        {
            get { return (bool)base.GetProperty("Shadow"); }
            set { base.SetProperty("Shadow", value); }
        }
        /// <summary>サイズを取得・設定します。</summary>
        public double Size
        {
            get { return (double)base.GetProperty("Size"); }
            set { base.SetProperty("Size", value); }
        }
        /// <summary>取消線を表示するかどうかを取得・設定します。</summary>
		public bool Strikethrough
		{
			get { return (bool)base.GetProperty("Strikethrough"); }
			set { base.SetProperty("Strikethrough", value); }
		}
        /// <summary>下付で表示するかどうかを取得・設定します。</summary>
		public bool Subscript
		{
			get { return (bool)base.GetProperty("Subscript"); }
			set { base.SetProperty("Subscript", value); }
		}
        /// <summary>上付で表示するかどうかを取得・設定します。</summary>
		public bool Superscript
		{
			get { return (bool)base.GetProperty("Superscript"); }
			set { base.SetProperty("Superscript", value); }
		}
        /// <summary>色をテーマ色で取得・設定します。</summary>
        public ThemeColor ThemeColor
        {
            get { return (ThemeColor)(int)base.GetProperty("ThemeColor"); }
            set { base.SetProperty("ThemeColor", (int)value); }
        }
        /// <summary>テーマフォントを取得・設定します。</summary>
		public ThemeFont ThemeFont
		{
			get { return (ThemeFont)(int)base.GetProperty("ThemeFont"); }
			set { base.SetProperty("ThemeFont", (int)value); }
		}
        /// <summary>色の明度を取得・設定します。</summary>
        public float TintAndShade
        {
            get { return (float)base.GetProperty("TintAndShade"); }
            set { base.SetProperty("TintAndShade", value); }
        }
        /// <summary>下線を表示するかどうかを取得・設定します。</summary>
		public bool Underline
		{
			get { return (bool)base.GetProperty("Underline"); }
			set { base.SetProperty("Underline", value); }
		}
	}
}
